﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
 
using System.Collections;
using MShop.Core.Domain;


namespace MShop.Core.Util
{
    //public class DataUtil
    //{

    //    public static DataUtil Default
    //    {
    //        get
    //        {
    //            return new DataUtil(IoC.Resolve<MShopEntities>());
    //        }
    //    }

    //    public MShopEntities DataContext { get; private set; }
    //    public DataUtil(MShopEntities dt)
    //    {
    //        DataContext = dt;
    //    }

    //    public IList<SelectListItem> ConvertListItem<T>(IQueryable<T> querable,string text,string value,object selectedValue,bool includeAll)
    //    {
    //        MultiSelectList list = null;
    //        if (selectedValue is IEnumerable)
    //        {
             
    //            list = new MultiSelectList(querable, value, text, (IEnumerable)selectedValue);
    //        }
    //        else
    //        {
              
    //            list = new SelectList(querable, value, text, selectedValue);
    //        }
    //        List<SelectListItem> enumerable = list.ToList();
    //        if (includeAll)
    //        {
    //            enumerable.Insert(0, new SelectListItem() { Text = "所有", Value = "-1" });
    //        }
    //        return enumerable;
    //    }

    //    public IList<SelectListItem> ConvertListItem<T>(IQueryable<T> querable, string text, string value, object selectedValue, SelectListItem rootSelectListItem)
    //    {
    //        MultiSelectList list = null;
    //        if (selectedValue is IEnumerable)
    //        {  
    //            list = new MultiSelectList(querable, value, text, (IEnumerable)selectedValue);
    //        }
    //        else
    //        {
    //            HttpContext.Current.Response.Write("sel"); HttpContext.Current.Response.End();
    //            list = new SelectList(querable, value, text, selectedValue);
    //        }
    //        List<SelectListItem> enumerable = list.ToList();
    //        if (rootSelectListItem!=null)
    //        {
    //            enumerable.Insert(0, rootSelectListItem);
    //        }
    //        return enumerable;
    //    }

    //    public IList<SelectListItem> ConvertListItem<T>(IQueryable<T> querable, string text, string value, object selectedValue)
    //    {
    //        return ConvertListItem<T>(querable, text, value, selectedValue, false);
    //    }

    //    public IList<SelectListItem> ConvertListItem<T>(IQueryable<T> querable, string text, string value)
    //    {
    //        return ConvertListItem<T>(querable, text, value, null, false);
    //    }
          

    //    public void QueryableSortMenu(IEnumerable<Menu> objects, ref HashSet<Menu> hashset, ref int rowIndex, int? id = null)
    //    {
    //        IEnumerable<Menu> enums = objects.Where(x => x.ParentId == id);
    //        foreach (var item in enums)
    //        {

    //            item.NodeId = rowIndex;
    //            hashset.Add(item);
    //            rowIndex++;
    //            QueryableSortMenu(item.Menu1, ref hashset, ref rowIndex, item.Id);
    //        }
    //    }


    //    public IList<SelectListItem> GetSortMenus(bool includeRoot = false)
    //    {
    //        HashSet<Menu> hashset = new HashSet<Menu>();
    //        int rowIndex = 1;
    //        QueryableSortMenu(DataContext.Menu.AsEnumerable(), ref hashset, ref rowIndex);
    //        IList<SelectListItem> list = new List<SelectListItem>();

    //        foreach (var item in hashset)
    //        {
    //            SelectListItem sitem = new SelectListItem();
    //            sitem.Value = item.Id.ToString();

    //            string line = "├";
    //            for (int i = 0; i < item.Depth; i++)
    //            {
    //                line += "—";
    //            }
    //            sitem.Text = string.Concat(line, item.Name);
    //            list.Add(sitem);
    //        }
    //        if (includeRoot)
    //        {
    //            list.Insert(0, new SelectListItem() { Text = "根节点", Value = "" });
    //        }
    //        return list;
    //    }

          


    //    public void QueryableSortDepartment(IEnumerable<Department> objects, ref HashSet<Department> hashset, ref int rowIndex, int? id = null)
    //    {
    //        IEnumerable<Department> enums = objects.Where(x => x.ParentId == id);
    //        foreach (var item in enums)
    //        {

    //            item.NodeId = rowIndex;
    //            hashset.Add(item);
    //            rowIndex++;
    //            QueryableSortDepartment(item.Department1, ref hashset, ref rowIndex, item.Id);
    //        }
    //    }


    //    public IList<SelectListItem> GetSortDepartments(bool includeRoot = false,object selectedValue=null)
    //    {
    //        HashSet<Department> hashset = new HashSet<Department>();
    //        int rowIndex = 1;
    //        QueryableSortDepartment(DataContext.Department.AsEnumerable(), ref hashset, ref rowIndex);
    //        IList<SelectListItem> list = new List<SelectListItem>();

    //        foreach (var item in hashset)
    //        {
    //            SelectListItem sitem = new SelectListItem();
    //            sitem.Value = item.Id.ToString();
    //            if (selectedValue != null)
    //            {
    //                if (sitem.Value == selectedValue.ToString())
    //                    sitem.Selected = true;
    //            }
    //            string line = "├";
    //            for (int i = 0; i < item.Depth; i++)
    //            {
    //                line += "—";
    //            }
    //            sitem.Text = string.Concat(line, item.DeptName);
    //            list.Add(sitem);
    //        }
    //        if (includeRoot)
    //        {
    //            list.Insert(0, new SelectListItem() { Text = "根节点", Value = "" });
    //        }
    //        return list;
    //    }
      
    //}
}
